www.gusucode.com > Matlab在化学工程中的应用 > Matlab在化学工程中的应用/实用化工计算机模拟-Matlab在化学工程中的应用/Examples/Chapter 4/ChemHeatPump.m

    function ChemHeatPump
% 可逆气固化学热泵制冷系统的动态模拟--考虑热容随反应进度的变化
clear all

global R
global mt ms Ms Ns Mt Ff Cps1 Cps2 Cpf Cpt n2
global d do h1 h2 e1 e2 d1 d2 Vf Vs
global Rho
global koa kod Ea Ed Ma Md
global hsw hfw hfe Asw Afw Afe Wo
global dHe dHr IAD 
global Ta Pc Tfin   % Ta: 环境温度
global Toc Toh
global wgr rhos Cpgr Mg 

% 输入参数
% --------
% (1)反应器结构参数
d = 0.150;                  % 吸附器内径,m
do = 0.006;                 % 气体扩散器(中心孔)的直径,m
h1 = 0.100;                 % 反应材料的高度,m
h2 = 0.114;                 % 夹套有效高度,m
e1 = 0.0045;                % 壁厚,m
e2 = 0.012;                 % 夹套的流通宽度,m
d1 = d + 2*e1;              % 吸附器外径,m (d1=0.159 m)
d2 = d+2*e1+2*e2;           % 反应器外壁,m (d2=0.183 m)
Vf = pi/4*(d2^2-d1^2)*h2;   % 夹套中导热油的体积,m3
Vs = pi/4*(d^2-do^2)*h1;    % 反应器中盐床的体积,m3

% (2)反应器物性参数
Mt = 25;                    % 反应器质量,kg
Cpt = 50;                   % 反应器热容量,Jkg-1K-1    

% (3)反应(吸附)材料的参数
mt = 1.390;                 % kg,IMPEX的总质量,对于SrCl2IMPEX  
ms = 1037.14;               % g,对于SrCl2/NH3IMPEX
Cps1 = 697;                 % SrCl2.NH3的热容,Jm-3K-1
Cps2 = 1480;                % SrCl2.8NH3的热容,Jm-3K-1
Ms = 158.526;               % 反应盐SrCl2的摩尔质量,g/mol
Mg = 17;                    % 氨气的摩尔质量,g/mol
n2 = 7;                     % 对于SrCl2/NH3    
Ns = ms/Ms;
wgr = 0.30;                  % 可膨胀石墨的重量百分比
Cpgr = 674;                 % 可膨胀石墨的比热,J/kgK
rhos = mt/Vs;               % 反应材料的密度,kg/m3

IAD = 1;

% (4)热力学参数  
dHe = 23366;                % 氨的蒸发潜热,J/mol
dHr = 41431;                % 反应热,J/mol
K = 273.15;
R = 8.3145;

% (5)传热参数及传热面积
hsw = 500;                  % W/(Km2)
hfw = 692;                  % W/(Km2)
hfe = 2;                    % W/(Km2)  
Asw = pi*d*h1;
Afw = pi*d1*h1;
Afe = pi*d2*h2;      

% (6)动力学参数
koa = 0.0190;
Ea = 6921;
Ma = 2.96; 
kod = 0.125;
Ed = 9000;
Md = 3.02;

% (7)载热介质(导热油)物性参数:
Rho = 870;                  % 载热介质(导热油)的密度,kgm-3
Cpf = 2400;                 % 载热介质的热容,Jkg-1K-1

% (8)操作参数
Ff = 80e-6;                 % 载热介质的体积流量,m3s-1
Wo = Vf*Rho;                % 夹套中导热油的重量,kg  
Ta = 30+K;                  % 环境温度,K
Th = 140 + K;               % 绝对温度,K       
Toc = 20 + K;               % 冷油温度
Toh = 140 + K;              % 热油温度
Pa = 5;                     % 操作压力,bar
Pd = 13;
 
% 吸附过程模拟
% ------------
tspan = [0  9000];
y0 = [0 Toc Toc Toc];
[t,y] = ode23s(@Equations,tspan,y0,[],1,Pa,Toc);

% 吸附过程总反应进度的动态变化图
plot(t,y(:,1))
xlabel('Time (s)')
ylabel('X_a')
title('吸附过程总反应进度的动态变化')

% 吸附过程床层温度、壁温、载热流体温度的动态变化图
figure
plot(t,y(:,2),'k--',t,y(:,3),'b-',t,y(:,4),'r-.')
xlabel('Time (s)')
ylabel('Temperature (K)')
legend('T_s','T_w','T_f')
title('吸附过程床层温度、壁温、载热流体温度的动态变化')

% 考察吸附压力的影响
Pai = [2, 3, 4, 5];
n = length(Pai);
for i = 1:n
    [t,y] = ode23s(@Equations,tspan,y0,[],1,Pai(i),Toc);
    ti{i} = t;
    Xi{i} = y(:,1);
    Tsi{i} = y(:,2);
end

% 吸附压力对总反应进度X的影响图
figure
plot(ti{1},Xi{1},'r:',ti{2},Xi{2},'b-.',ti{3},Xi{3},'k-',ti{4},Xi{4},'b--')
xlabel('Time (s)')
ylabel('X_a')
legend('Pa = 2','Pa = 3','Pa = 4','Pa = 5')
title('吸附压力对总反应进度的影响')

% 吸附压力对反应床层温度Ts的影响图
figure
plot(ti{1},Tsi{1},'r:',ti{2},Tsi{2},'b-.',ti{3},Tsi{3},'k-',ti{4},Tsi{4},'b--')
xlabel('Time (s)')
ylabel('T_s')
legend('Pa = 2','Pa = 3','Pa = 4','Pa = 5')
title('吸附压力对反应床层温度的影响')


% 解吸过程模拟
% ------------
y0 = [0 Toh Toh Toh];
[t,y] = ode23s(@Equations,tspan,y0,[],-1,Pd,Toh);

% 解附过程图形输出
figure
plot(t,y(:,1))
xlabel('Time (s)')
ylabel('X_d')
title('解吸过程总反应进度的动态变化')
figure
% plot(t,y(:,2:4))
plot(t,y(:,2),'k--',t,y(:,3),'b-',t,y(:,4),'r-.')
xlabel('Time (s)')
ylabel('Temperature (K)')
legend('T_s','T_w','T_f')
title('解吸过程床层温度、壁温、载热流体温度的动态变化')


% ------------------------------------------------------------------
function dydt = Equations(t,y,IAD,Pc,Tfin)
% 函数功能:计算某时刻的反应盐(床层)、载热流体
% 和反应器壁的温度以及反应进度的动态变化
%
% 输入参数:
% t   --- 时间,s
% Cps --- 反应器内IMPEX的热容量,Jm-3K-1
% Cpf --- 载热流体(加热油)的比热容,Jkg-1K-1
% Cpt --- 反应器壁的热容量,Jkg-1K-1 
% Mt  --- 反应器壁的质量,kg
% Ff  --- 载热流体(加热油)的体积流率,m3s-1
% Rho --- 载热介质(导热油)的密度,kgm-3
% dHr --- 反应热
% hsw --- 床层与反应器壁之间的传热参数,W/(Km2)
% Asw --- 床层的传热面积,m2
% hfw --- 反应器壁面和载热流体之间的传热参数,W/K
% hfe --- 载热流体与环境之间的散热参数,W/K 
% Ta  --- 环境温度,K
% Pc  --- 操作压力,bar
%
% 输出变量:
%  Ts  --- 某时刻的反应盐(床层)温度
%  Tf  --- 某时刻的载热流体温度
%  Tw  --- 某时刻的反应器壁温度
%  X   --- 某时刻的总反应进度

global Ns Mt Ff Cps1 Cps2 Cpf Cpt n2
global Rho hsw hfw hfe Asw Afw Afe Wo
global dHr Ta Vf Vs
X = y(1);
Ts = y(2);
Tw = y(3);
Tf = y(4);  

dXdt = Kinetics(IAD,t,X,Pc,Ts);
Cps = CPX(IAD,X);

% 对反应盐(床层) --- 吸附时IAD=1, 解吸时IAD=-1      
dTsdt = ( hsw*Asw*(Tw-Ts)+IAD*n2*Ns*dHr*dXdt )/(Vs*Cps);

% 对反应器壁:
dTwdt = ( hsw*Asw*(Ts-Tw)-hfw*Afw*(Tw-Tf) )/(Mt*Cpt);

% 对载热流体:
dTfdt = ( hfw*Afw*(Tw-Tf)-hfe*Afe*(Tf-Ta) )/(Wo*Cpf)  ...
        - Ff*Rho*Cpf*(Tf-Tfin);

dydt = [dXdt; dTsdt; dTwdt; dTfdt];

% ------------------------------------------------------------------
function dXdt = Kinetics(IAD,t,X,Pc,Ts)
global R koa Ea Ma kod Ed Md
% koa --- 吸附系数
% kod --- 解吸系数
% Ea  --- 吸附活化能
% Ed  --- 解吸活化能
% Ma  --- 吸附幂指数
% Md  --- 解吸幂指数
if IAD == 1;
    ko = koa;
    E = Ea;
    M = Ma;
end
if IAD == -1;
    ko = kod;
    E = Ed;
    M = Md;
end
Ar = ko * exp(-E/R./Ts);
Peq = exp( -4983.16./Ts+16.00 );
Pm = IAD*( Pc-Peq )./Peq;
if (Pm<=0) | (X<0)                      % Pm <= 0表示尚未发生吸附或解吸
    X = 0;
    dXdt = 0;
else
    arg = Ar * Pm .* (M-1) .* t + 1;    
    dXdt = Ar .* ( 1-X ) .^M .* Pm;     % dXdt = f(Ts)    
end

% ------------------------------------------------------------------
function Cp = CPX(IAD,X)                % 计算给定总反应进度下的体积热容
global wgr rhos Cpgr Cps1 Cps2 Mg Ms 
% wgr       weight percentage of inert binder  
% rhos      anhydrous volumetric mass, kg/m3
% Cpgr      specific heat capacity of graphite, J/kgK
% Mg        molar weight of gas, kg/mole 
% Ms        molar weight of anhydrous salt SrCl2, kg/mol
% Cp        J/m3K

if (IAD == 1) 
    rate = X;
else
    rate = 1 - X;
end

Ms1 = rhos*(1-wgr)*(1+1*Mg/Ms)*(1-rate);    % SrCl.NH3
Ms2 = rhos*(1-wgr)*(1+8*Mg/Ms)*rate;        % SrCl.8NH3
Cp = rhos*wgr*Cpgr + Cps1*Ms1 + Cps2*Ms2;